272 research outputs found

    Phobos: A front-end approach to extensible compilers (long version)

    Get PDF
    This paper describes a practical approach for implementing certain types of domain-specific languages with extensible compilers. Given a compiler with one or more front-end languages, we introduce the idea of a "generic" front-end that allows the syntactic and semantic specification of domain-specific languages. Phobos, our generic front-end, offers modular language specification, allowing the programmer to define new syntax and semantics incrementally

    Formalizing Abstract Algebra in Constructive Set Theory

    Get PDF
    We present a machine-checked formalization of elementary abstract algebra in constructive set theory. Our formalization uses an approach where we start by specifying the group axioms as a collection of inference rules, defining a logic for groups. Then we can tell whether a given set with a binary operation is a group or not, and derive all properties of groups constructively from these inference rules as well as the axioms of the set theory. The formalization of all other concepts in abstract algebra is based on that of the group. We give an example of a formalization of a concrete group, the Klein 4-group

    Formal Compiler Implementation in a Logical Framework

    Get PDF
    The task of designing and implementing a compiler can be a difficult and error-prone process. In this paper, we present a new approach based on the use of higher-order abstract syntax and term rewriting in a logical framework. All program transformations, from parsing to code generation, are cleanly isolated and specified as term rewrites. This has several advantages. The correctness of the compiler depends solely on a small set of rewrite rules that are written in the language of formal mathematics. In addition, the logical framework guarantees the preservation of scoping, and it automates many frequently-occurring tasks including substitution and rewriting strategies. As we show, compiler development in a logical framework can be easier than in a general-purpose language like ML, in part because of automation, and also because the framework provides extensive support for examination, validation, and debugging of the compiler transformations. The paper is organized around a case study, using the MetaPRL logical framework to compile an ML-like language to Intel x86 assembly. We also present a scoped formalization of x86 assembly in which all registers are immutable

    Providing asynchronous file I/O for the Plan 9 operating system

    Get PDF
    Thesis (M. Eng.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2004.Includes bibliographical references (leaf 55).This thesis proposes a mux abstraction that multiplexes messages of a network file protocol to provide asynchronous access to all system resources on the Plan 9 operating system. The mux provides an easy-to-program asynchronous interface alleviating the need to manage multiple connections with different servers. A modified version of the Plan 9 Web server demonstrates that the mux can be used to implement a high-performance server with user-level threads without having to use a kernel thread for each user-level thread. Scalability tests demonstrate that the mux implementation scales well with hundreds of clients and hundreds of servers. Furthermore, the user-threaded version of the web server performs comparably with the kernel-threaded implementation on disk bound workloads and exhibits an 18% decrease in performance on in memory workloads. These results suggest that the mux could provide performance benefits for more intricate applications that can exploit the fine-grained control of user-level scheduling.by Jason Hickey.M.Eng

    A Computational Approach to Reflective Meta-Reasoning about Languages with Bindings

    Get PDF
    We present a foundation for a computational meta-theory of languages with bindings implemented in a computer-aided formal reasoning environment. Our theory provides the ability to reason abstractly about operators, languages, open-ended languages, classes of languages, etc. The theory is based on the ideas of higher-order abstract syntax, with an appropriate induction principle parameterized over the language (i.e. a set of operators) being used. In our approach, both the bound and free variables are treated uniformly and this uniform treatment extends naturally to variable-length bindings. The implementation is reflective, namely there is a natural mapping between the meta-language of the theorem-prover and the object language of our theory. The object language substitution operation is mapped to the meta-language substitution and does not need to be defined recursively. Our approach does not require designing a custom type theory; in this paper we describe the implementation of this foundational theory within a general-purpose type theory. This work is fully implemented in the MetaPRL theorem prover, using the pre-existing NuPRL-like Martin-Lof-style computational type theory. Based on this implementation, we lay out an outline for a framework for programming language experimentation and exploration as well as a general reflective reasoning framework. This paper also includes a short survey of the existing approaches to syntactic reflection

    A critical review of personal recovery in mental illness

    Get PDF

    MojaveComm: A Robust Group Communication Library for Grid Environments

    Get PDF
    This paper introduces a fault-tolerant group communication protocol that is aimed at grid and wide area environments. The protocol has two layers. The lower layer provides a total order of messages in one group, while the upper layer provides an ordering of messages across groups. The protocol can be used to implement sequential consistency. To prove the correctness of our protocol we have used a combination of model checking and mathematical proofs. The paper also presents the behavior of our implementation of the protocol in a simulated environment

    Academic Allyship in Nursing: Deconstructing a successful community-academic collaboration

    Get PDF
    Public health and social care systems in Canada are frequently racist and discriminatory towards Indigenous people and exacerbates health inequities that Indigenous people experience. In New Brunswick, there are a range of culturally informed health and social services being offered within First Nations communities and by Indigenous organization that operate outside of reserves. Some of these services and organizations rely on support from non-Indigenous allies to meet the needs of their community members. However, it can be challenging for non-Indigenous people to engage in allyship due to unconscious bias, false assumptions, and lack of cross-cultural understanding. Effective allyship can also be challenging due a lack of understanding of the time, resources, and commitments that are required. Academic allyship from within post-secondary institutions can be particularly challenging because of a history of past harm done to Indigenous communities and entrenched colonial structures and policies. The purpose of this article is to provide an example of academic allyship with an urban Indigenous organization and consider some of the success factors that have supported this ongoing collaboration. The authors reflect on more than four years of successful collaboration and use a recent project to illustrate what worked and why. The success factors were, building a relationship and trust; becoming better informed; offering support freely; stepping off the beaten path (to tenure); staying critically self-aware; and enjoying the work (immensely). The success factors are not intended as a roadmap because every collaboration is unique. However, they may help potential allies enter potential collaboration being better informed. Academic allyship can be highly impactful and highly rewarding, but it also should not be undertaken without reflection on one’s reasons for doing so and capacity to commit. Résumé Les systèmes de santé et de services sociaux publics au Canada font souvent preuve de racisme et de discrimination envers les peuples autochtones, aggravant du même coup les inégalités en matière de santé que subissent ces peuples. Au Nouveau-Brunswick, une gamme de services de soins de santé et de services sociaux adaptés à la culture sont offerts au sein des communautés des Premières Nations et par des organisations autochtones à l’extérieur des réserves. Certains de ces services et organismes comptent sur le soutien d’alliés non autochtones afin de répondre aux besoins des membres de leur communauté. Cependant, il peut s’avérer difficile pour les non autochtones de s’allier en raison de préjugés inconscients, d’hypothèses infondées et d’un manque de compréhension interculturelle. La méconnaissance du temps, des ressources et des engagements nécessaires peut également constituer un obstacle à l’établissement d’une alliance optimale. Les torts causés aux communautés autochtones par le passé et les structures et les politiques coloniales enracinées rendent particulièrement difficile la création d’une alliance universitaire au sein des établissements d’enseignement postsecondaire. Le but de cet article est de fournir un exemple d’alliance universitaire avec une organisation autochtone urbaine et d’examiner certains des facteurs de réussite qui ont favorisé cette collaboration. Les auteurs se basent sur une collaboration florissante de plus de quatre ans et illustrent ce qui a fonctionné et les raisons expliquant cette réussite grâce à un projet récent. Les facteurs de réussite se basaient sur l’habileté à bâtir une relation et un climat de confiance; de s’informer davantage; d’offrir gratuitement du soutien; de sortir des sentiers battus (vers la titularisation); de faire preuve de jugement critique envers soi-même et d’apprécier le travail (immensément). Les facteurs de réussite ne se veulent pas un guide rigide, car chaque collaboration est unique. Cependant, ils peuvent aider des alliés potentiels à entrer dans une éventuelle collaboration en étant mieux informés. L’alliance académique peut être très percutante et enrichissante, mais elle ne doit pas non plus être entreprise sans réfléchir aux raisons et à sa capacité à s’engager

    The Mojave Compiler: Providing Language Primitives for Whole-Process Migration and Speculation for Distributed Applications

    Get PDF
    We present an approach for implementing language-level primitives for whole-process migration and speculative execution in a compiler and associated runtime environment. These primitives are exposed to the user through simple language constructs that do not require the user to manage process state explicitly. With migration and speculation we show how the user can quickly add persistent checkpoints to any large-scale distributed application that requires longevity in a faulty environment. We demonstrate the use of migration and speculation primitives for checkpointing in a canonical grid computation application, and analyze the results of this implementation
    corecore